namespace IQIGame.Onigao.GamePlay
{
    /// <summary>
    /// 实体被占用类型
    /// 占用都不存档
    /// 不少占用结束时都涉及触发服务，这部分服务是会通过延迟服务保存的，但中途强退会导致服务的执行与实体的状态分离，即虽然服务会按时触发但实体会恢复原状。
    /// 这种情况下策划需考虑如果在占用过程中离开，再次进入关卡时状态结束的服务否会【重复】触发，实体位置等参数是否表现合理，是否和重置实体冲突（例如服务结束需要依赖某些实体的特殊位置或状态，但这些实体却因为重新进入关卡被重置了）等问题
    /// 部分功能，如NPC寻路，剧情对话会有恢复功能（因为这些功能的服务和实体位置，玩家操作等强绑定，所以必须恢复），功能恢复时会恢复占用状态，不会有上述问题。
    /// 
    /// 目前可能会有重复触发以及和重置实体冲突问题的：SpeechBubble（对话气泡）, CameraMotion（镜头动画）, BeingPush（推箱子）
    /// 不涉及服务，也不会恢复，策划负责不会卡死的：UseElevator（使用电梯），CallElevator（呼叫电梯）
    /// 会恢复的：Dialog（剧情对话）
    /// NPC寻路不设置占用状态，只涉及延迟服务，类似Dialog
    /// </summary>
    public enum EntityOccupationStatus
    {
        None,
        /// <summary>
        /// npc对话（气泡形式）//不存档
        /// </summary>
        SpeechBubble,
        /// <summary>
        /// 乘坐电梯 //不存档
        /// </summary>
        UseElevator,
        /// <summary>
        /// 呼叫电梯 //不存档
        /// </summary>
        CallElevator,
        /// <summary>
        /// 相机移动，切屏 //不存档
        /// </summary>
        CameraMotion,
        /// <summary>
        /// 被推动 //不存档
        /// </summary>
        BeingPush,
        /// <summary>
        /// 对话 //依赖恢复功能
        /// </summary>
        Dialog,
        /// <summary>
        /// 战斗
        /// </summary>
        Battle,
        /// <summary>
        /// 道具提交
        /// </summary>
        ItemSubmit,
    }
}
